#!c:/Python27/python.exe -u
# -*- coding: utf-8/IGNORE',$string);-*-
''' Tema - Linguagens de Programação Dinâmicas
Trabalho de Python á Discíplina - Linguagens de Programação

Statistics.py tem como função efectuar a ligação a base de Dados 
Depois de efectuar a ligação a Base de dados, realiza a leitura dos mesmos passandos por filtros 
A cada função da classe, possui filtros que retornam os valores de cada coluna da Base de Dados 
'''
__author__ = "Miguel Fialho, Nº 5958 - Pedro Serrano, Nº 3958"
__copyright__ = "Copyright 2014 - Miguel Fialho / Pedro Serrano"
__credits__ = ""
__license__ = "GPL"
__maintainer__ = "1.0"
__email__ = "mF200_5@hotmail.com"
__status__ = ""

'''Importações de bibliotecas e módulos para o desenvolvimento de funções aritméticas, gráficas, lógicas, entre outras...'''
import os
from ReadFile import *
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine

class Statistics():
    '''
    classe responsavel por criar as estatistica do programa
    '''
    def __init__(self):
        '''
        Método para instanciar obetos de ligação a base de dados, para que não seja necessário de estar sempre a 
        criar ligações em novos métodos da classe
        '''
        AccoesBD.database = create_engine('sqlite:///DataBase.db', echo = False)
        AccoesBD.login = sessionmaker(bind=AccoesBD.database)
        AccoesBD.login.configure(bind=AccoesBD.database)
        AccoesBD.login = AccoesBD.login()
        pass

    def getAno(self, id):
        '''
        Método que returna todos os dados da coluna (Ano) que se encontra na tabela da Base de Dados, para visualização dos mesmos 
        @Param Return o ano através do id que recebe como parametro
        @Param id -> id do ano na base de dados
        '''
        for x in AccoesBD.login.query(CriacaoTabelas.id,CriacaoTabelas.ano).\
            filter(CriacaoTabelas.id == id):
            pass
            return x[1]
    
    def getIpc_global(self, id):
        '''
        Método que returna todos os dados da coluna (IPC_Global) que se encontra na tabela da Base de Dados, para visualização dos mesmos 
        @Param Return o ipc global através do id que recebe como parametro
        @Param id -> id do ano na base de dados
        '''
        for x in AccoesBD.login.query(CriacaoTabelas.id,CriacaoTabelas.ipc_global).\
            filter(CriacaoTabelas.id == id):
            pass
            return x[1]

    def getInflacao(self, id):
        '''
        Método que returna todos os dados da coluna (Taxa de Inflação) que se encontra na tabela da Base de Dados, para visualização dos mesmos 
        @Param Return a inflacao através do id que recebe como parametro
        @Param id -> id do ano na base de dados
        '''
        for x in AccoesBD.login.query(CriacaoTabelas.id,CriacaoTabelas.inflacao).\
            filter(CriacaoTabelas.id == id):
            pass
            return x[1]

    def getRum_minima(self, id):
        '''
        Método que returna todos os dados da coluna (Remuneração Minima) que se encontra na tabela da Base de Dados, para visualização dos mesmos 
        @Param Return a Remuneração Minima através do id que recebe como parametro
        @Param id -> id do ano na base de dados
        '''
        for x in AccoesBD.login.query(CriacaoTabelas.id,CriacaoTabelas.rum_minima).\
            filter(CriacaoTabelas.id == id):
            pass
            return x[1]

    def getRum_maxima(self, id):
        '''
        Método que returna todos os dados da coluna (Remuneração Máxima) que se encontra na tabela da Base de Dados, para visualização dos mesmos 
        @Param Return a Remuneração Máxima através do id que recebe como parametro
        @Param id -> id do ano na base de dados
        '''
        for x in AccoesBD.login.query(CriacaoTabelas.id,CriacaoTabelas.rem_maxima).\
            filter(CriacaoTabelas.id == id):
            pass
            return x[1]

    def getPib(self, id):
        '''
        Método que returna todos os dados da coluna (Produto Interno Bruto) que se encontra na tabela da Base de Dados, para visualização dos mesmos 
        @Param Return a PIB através do id que recebe como parametro
        @Param id -> id do ano na base de dados
        '''
        for x in AccoesBD.login.query(CriacaoTabelas.id,CriacaoTabelas.pib).\
            filter(CriacaoTabelas.id == id):
            #print row.CriacaoTabelas.id, row.CriacaoTabelas.ano
            pass
            return x[1]  

    def getRem_nac(self, id):
        '''
        Método que returna todos os dados da coluna (Remuneração Nacional) que se encontra na tabela da Base de Dados, para visualização dos mesmos 
        @Param Return a Remuneração Nacional através do id que recebe como parametro
        @Param id -> id do ano na base de dados
        '''
        for x in AccoesBD.login.query(CriacaoTabelas.id,CriacaoTabelas.rem_nac).\
            filter(CriacaoTabelas.id == id):
            pass
            return x[1] 

    def getRem_disp(self, id):
        '''
        Método que returna todos os dados da coluna (Remuneração Disponivel) que se encontra na tabela da Base de Dados, para visualização dos mesmos 
        @Param Return a Remuneração Disponivel através do id que recebe como parametro
        @Param id -> id do ano na base de dados
        '''
        for x in AccoesBD.login.query(CriacaoTabelas.id,CriacaoTabelas.rem_disp).\
            filter(CriacaoTabelas.id == id):
            pass
            return x[1]  

    def getRemu_capital(self, id):
        '''
        Método que returna todos os dados da coluna (Remunerações Capital anual per capita) que se encontra na tabela da Base de Dados, para visualização dos mesmos 
        @Param Return a Remunerações Capital através do id que recebe como parametro
        @Param id -> id do ano na base de dados
        '''
        for x in AccoesBD.login.query(CriacaoTabelas.id,CriacaoTabelas.remu_capital).\
            filter(CriacaoTabelas.id == id):
            pass
            return x[1] 